package com.bsg.upm.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.bsg.upm.entity.HostEntity;

/**
 * 主机接口
 * 
 * @author HCK
 *
 */
public interface HostDao extends CrudDao<HostEntity> {

	/**
	 * 获取指定条件下的主机名称
	 * 
	 * @param siteId
	 *            站点编码
	 * @param clusterId
	 *            集群编码
	 * @return 主机集合
	 */
	List<HostEntity> listName(@Param("siteId") String siteId, @Param("clusterId") String clusterId);

	/**
	 * 获取所有主机信息(自身基础信息非关联其他信息)
	 * 
	 * @return 主机集合
	 */
	List<HostEntity> listWithoutAssociation();

	/**
	 * 获取指定关联编码的主机信息
	 * 
	 * @param relateId
	 *            主机关联编码
	 * @return 主机对象
	 */
	HostEntity getByRelateId(String relateId);

	/**
	 * 获取指定区域和主机名称的主机数量
	 * 
	 * @param areaId
	 *            区域编码
	 * @param name
	 *            主机名称
	 * @return 主机数量
	 */
	int countByAreaIdAndName(@Param("areaId") String areaId, @Param("name") String name);

	/**
	 * 获取指定区域和主机IP的主机数量
	 * 
	 * @param areaId
	 *            区域编码
	 * @param ip
	 *            主机IP
	 * @return 主机对象
	 */
	int countByAreaIdAndIp(@Param("areaId") String areaId, @Param("ip") String ip);

	/**
	 * 获取指定区域下已入库的主机的数量
	 * 
	 * @param areaId
	 *            区域编码
	 * @return 已入库的主机的数量
	 */
	int countInputByAreaId(String areaId);

	/**
	 * 获取指定集群下的主机的数量
	 * 
	 * @param clusterId
	 *            集群编码
	 * @return 主机数量
	 */
	int countByClusterId(String clusterId);

	/**
	 * 获取指定集群下已入库的主机的数量
	 * 
	 * @param clusterId
	 *            集群编码
	 * @return 已入库的主机的数量
	 */
	int countInputByClusterId(String clusterId);

	/**
	 * 更新主机关联编码
	 * 
	 * @param host
	 *            主机对象
	 * @return 更新数据条数
	 */
	int updateRelateId(HostEntity host);

	/**
	 * 更新主机状态
	 * 
	 * @param host
	 *            主机对象
	 * @return 更新数据条数
	 */
	int updateStatus(HostEntity host);

}
